//
//  LBNetworkManager.h
//  LBBase
//
//  Created by Gary on 15/7/1.
//  Copyright (c) 2015年 Lebo. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "LBRequestTaskQueue.h"

@protocol LBNetworkResponseDelegate <NSObject>
- (void)didReceiveNetData:(NSData*)data requestName:(NSString*)request;
- (void)didFailWithNetRequest:(id)data requestName:(NSString*)request;
@end

@interface LBNetworkManager : NSObject

@property (assign, nonatomic) int tag;
//@property (assign, atomic) BOOL isIdle;//是否空闲
@property (strong, nonatomic) LBRequestTaskQueue *requestTasks;
@property (strong, nonatomic) NSMutableArray *retryRequestTasks;  //等待重试的队列
@property (nonatomic, weak) id<LBNetworkResponseDelegate> delegate;

+ (void)updateRequestCookies;

/**
 *  请求数据:get方法
 *
 *  @param urlString url地址，除去前缀的部分。前缀在CLBaseNetworkManager初始化时设置了。
 *  @param parms     请求参数
 *  @param success   成功的响应块
 *  @param fail      失败的响应块
 */
- (void)getDataWithUrl:(NSString *)urlString
                 params:(NSDictionary *)params
            withCookie:(BOOL)withCookie;

/**
 *  请求数据:get xml方法
 *
 *  @param urlString url地址，除去前缀的部分。前缀在CLBaseNetworkManager初始化时设置了。
 *  @param parms     请求参数
 *  @param success   成功的响应块
 *  @param fail      失败的响应块
 */
- (void)getXmlDataWithUrl:(NSString *)urlString
                   params:(NSDictionary *)params
               withCookie:(BOOL)withCookie;

/**
 *  请求数据:json post方法
 *
 *  @param urlString url地址，除去前缀的部分。前缀在CLBaseNetworkManager初始化时设置了。
 *  @param parms     请求参数
 *  @param success   成功的响应块
 *  @param fail      失败的响应块
 */
- (void)postJsonDataWithUrl:(NSString*)urlString
              params:(NSDictionary*)params
                 withCookie:(BOOL)withCookie;

/**
 *  请求数据:xml post方法
 *
 *  @param urlString url地址，除去前缀的部分。前缀在CLBaseNetworkManager初始化时设置了。
 *  @param xmlString     xml字符串
 *  @param encoding   编码方式
 */
- (void)postXmlDataWithUrl:(NSString *)urlString
             params:(NSDictionary *)params
                 xmlString:(NSString *)xmlString
                  encoding:(NSString*)encoding
                withCookie:(BOOL)withCookie;

- (void)postUploadWithUrl:(NSString*)urlString
                   params:(NSDictionary*)params
               withCookie:(BOOL)withCookie;

@end
